获取示例和安装示例的说明
执行下列一项或多项操作:
在“帮助”菜单上单击“示例”。
“自述”显示有关示例的信息。
访问 Visual Studio 2008 示例网站。该网站上提供了示例的最新版本。
在安装 Visual Studio 的计算机上查找示例。默认情况下,示例和自述文件安装在驱动器:\Program Files\Microsoft Visual Studio 9.0\Samples\lcid 下。对于 Visual Studio 速成版而言,所有示例都在网上提供。
有关更多信息,请参见
| 注意: |
|---|
网格中的活动节点发布其网格名称以便其他节点可以找到它们。网格会根据不断更改的成员资格进行调整,在节点不断加入和离开网格的环境中具有可适应的连接性,并会动态优化以适应流量模式。 |
网格中的活动节点发布其网格名称以便其他节点可以找到它们。网格会根据不断更改的成员资格进行调整,在节点不断加入和离开网格的环境中具有可适应的连接性,并会根据流量模式动态优化。
对等节点是网格中的终结点。单个应用程序可以具有参与不同网格的多个对等节点。
对等解析程序负责将网格 ID 解析为网格中节点的终结点地址。对等节点使用这些地址连接到网格中的其他节点。这使消息可以在网格中进行传播。
Chat 是一个 Windows 窗体应用程序。Chat 应用程序的每个实例都创建一个具有相同终结点地址的 IDuplexChannel。因为 Chat 应用程序的所有实例都使用相同的地址,所以由该应用程序的一个实例发送的消息会由其对等通道上的所有其他实例所接收。
Chat 应用程序定义并实现 IChat 双工协定。IChat 协定仅允许单向操作,因为 ServiceModel 不支持单请求/多响应范例。(在一个多方通道中,发送到网格的单个请求可以生成多个响应。)
本示例实现一个 Main 静态函数以创建一个具有 IChat 双工协定的 IClientChannel。该函数使用在配置文件中指定的终结点。
所有 Chat 实例都必须使用相同的终结点地址以确保由一个实例发送的消息可以由所有其他实例所接收。
本示例中的 Chat 实例使用自定义解析程序或使用默认对等解析程序 (PNRP) 来互相进行查找。请注意,PNRP 在 Windows Server 2003 上不可用。因此,在运行 Windows Server 2003 的系统中必须使用自定义解析程序来运行本示例。默认情况下,本示例设置为使用自定义解析程序。使用自定义解析程序还是默认解析程序由下面的配置文件中定义的聊天终结点确定。若要切换到默认对等解析程序 (PNRP),请在本示例的配置文件中的 bindingConfiguration 下将 BindingCustomResolver 替换为 BindingDefault。
<!-- 参与网格的聊天实例。-->
<endpoint name="ChatEndpoint"
address="net.p2p://chatMesh/ServiceModelSamples/Chat"
binding="netPeerTcpBinding"
bindingConfiguration="BindingCustomResolver"
contract="Microsoft.ServiceModel.Samples.IChat">
</endpoint> |
为了使对等节点可以与对等通道自定义对等解析程序服务进行通信,要在配置文件中定义对等通道自定义对等解析程序的客户端配置。
<!-- 用于与自定义解析程序服务通信的客户端。-->
<client>
<endpoint configurationName="CustomPeerResolverEndpoint"
address="net.tcp://localhost/ServiceModelsamples/peerResolverService"
binding="netTcpBinding"
bindingConfiguration="Binding3"
contract="Microsoft.ServiceModel.SamplesICustomPeerResolver">
</endpoint>
</client> |
地址标识解析程序服务的地址。如果解析程序服务运行于远程计算机上,则应使用限定域名替换 localhost。
示例还演示如何从 IClientChannel 检索对等节点以及如何使用 IOnlineStatus 为联机和脱机事件进行注册。当对等节点连接到网格中至少一个其他对等节点时,会启动联机事件。当对等节点不再连接到网格中任何其他对等节点时,会启动脱机事件。
由于对等通道未与服务元数据实用工具 (Svcutil.exe) 集成,所以当前无法生成元数据。
在运行示例时,一个 Chat 实例发送的聊天消息会显示在其他 Chat 实例的控制台窗口中。在每个控制台窗口中按 Q 键然后按 Enter 可以关闭相应的实例。
| 注意: |
|---|
该示例当前不处理基础结构可能引发的所有可能异常。如果要在商业或生产环境中使用这些示例,应遵循适当的异常处理最佳做法。 |